package com.webserver.http;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import javax.imageio.stream.ImageInputStream;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * HttpContext 封装当前服务器的有关的静态环境信息
 * 文件类型（mime-mapping） 是静态环境信息
 */

public class HttpContext{
    /**
     * 全部用户共享的文件类型映射集合
     */
    private static Map<String ,String > map = new HashMap<>();
    static {
        initmap();
    }
    /*
    *  定义初始化方法，封装 map集合的初始化过程
    */
    private static  void initmap(){
        try {
            File file = new File("config/web.xml");
            SAXReader reader = new SAXReader();
            Document doc = reader.read(file);

            //System.out.println(doc.asXML());
            Element root = doc.getRootElement();
            List<Element> list = root.elements("mime-mapping");
            for (Element e:list){
                //System.out.println(e.asXML());
                String ext = e.elementTextTrim("extension");
                String type = e.elementTextTrim("mime-type");
                map.put(ext,type);
            }
        } catch (DocumentException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
    * 根据文件的扩展名，检查其对应的 媒体类型（map type）
     * 如：ext png 则返回 image/png
     * @param ext 扩展名
     * @retrun  map
    */
    public static String getMapType(String ext){
        return map.get(ext);
    }


    public static void main(String[] args) {
        //JVM加载HttpContext时候就会自动初始化map
        System.out.println(map);
    }


}
